package leetcode.interviewClassics;

import java.util.Objects;

/**
 * @author Cheng Jun
 * Description: 字符串轮转。给定两个字符串s1和s2，请编写代码检查s2是否为s1旋转而成（比如，waterbottle是erbottlewat旋转后的字符串）。
 * https://leetcode-cn.com/problems/string-rotation-lcci/
 * @version 1.0
 * @date 2021/10/31 11:16
 */
public class isFlipedString {

    public static void main(String[] args) {

    }

    // 先看长度是否相等
    // 然后找到 s1 的第一个元素在 s2 的可能位置，每个可能位置切割s2，然后 后半段 + 前半段拼起来 和 s1 比较。
    static boolean isFlipedString(String s1, String s2) {
        // 长度相等，才有可能为true
        if (s1.length() == s2.length()) {
            // 如果 空串，返回 true
            if (s1.length() == 0) return true;
            char headElement = s1.charAt(0);
            int fromIndex = 0;
            // 只要s2 存在 headElement，就要进行一次 切割和拼接
            while (s2.indexOf(headElement, fromIndex) > -1) {
                int index = s2.indexOf(headElement, fromIndex);
                // 切割，拼接,比较
                if (Objects.equals(s1, s2.substring(index) + s2.substring(0, index))) {
                    return true;
                } else {
                    fromIndex = index + 1;
                }
            }
        }
        return false;
    }

    static boolean method(String s1, String s2) {
        if (s1.length() != s2.length()) return false;
        return (s2 + s2).contains(s1);
    }
}
